数据通信
因为WatchKit extension 和 iOS app分别运行在各自的沙箱环境里,它们的不会共享文档和直接传递数据。所以我们需要一个app group让两个程序共享数据或者user default。
为iOS app和Watchkit Extension创建一个app group(在developer.apple.com里创建),并选中。使用shared group 的id创建一个 NSUserDefaults对象。 NSUserDefaults 对象的 initWithSuiteName:方法可以创建一个可以访问的user default data 对象。这样两个程序都能访问和更改它了。
直接通信
如果一个app和iOS app 紧密联系,那么可以使用openParentApplication:reply: 方法来向改app发送请求和取得相应。WatchKit extensions不支持后台,app仅仅在和用户进行交互时运行。而iOS app 没有这些限制,它支持后台并且可以在后台为WatchKit extensions收集数据。需要额外时间的操作,例如取得用户的地点的操作,应该在iOS app 上进行然后将数据传递给WatchKit extensions。
当你调用openParentApplication:reply: 方法,iOS在后台开始或者唤醒iOS app,并且调用改app 委托的
application:handleWatchKitExtensionRequest:reply:
方法。